home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 039a / mawk10.zip / PRIMES.AWK < prev    next >
Text File  |  1991-10-05  |  1KB  |  63 lines

  1.  
  2. # primes.awk
  3. #
  4. #  mawk -f primes.awk  [START]  STOP
  5. # find all primes    between 2 and STOP
  6. #       or START and STOP
  7. #
  8.  
  9.  
  10.  
  11. function usage()
  12. { ustr = sprintf("usage: %s  [start] stop", ARGV[0])
  13.   system( "echo " ustr) 
  14.   exit 1
  15. }
  16.  
  17.  
  18. BEGIN { if (ARGC == 1 || ARGC > 3 ) usage()
  19.         if ( ARGC == 2 )  { start = 2  ; stop = ARGV[1]+0 }
  20.     else
  21.     if ( ARGC == 3 )  { start = ARGV[1]+0 ; stop = ARGV[2]+0 }
  22.  
  23.    if ( start < 2 ) start = 2
  24.    if ( stop < start ) stop = start
  25.  
  26.    prime[ p_cnt = 1 ] =  3  # keep primes in prime[]
  27.  
  28. # keep track of integer part of square root by adding
  29. # odd integers 
  30.    odd = test = 5
  31.    root = 2
  32.    squares = 9
  33.  
  34.    
  35. while ( test <= stop )
  36. {
  37.    if ( test >= squares )
  38.    { root++
  39.      odd += 2
  40.      squares += odd 
  41.    }
  42.  
  43.    flag = 1
  44.    for ( i = 1 ; prime[i] <= root ; i++ )
  45.        if ( test % prime[i] == 0 )  #  not prime
  46.     { flag = 0 ; break }
  47.  
  48.    if ( flag )  prime[ ++p_cnt ] = test
  49.  
  50.    test += 2
  51. }
  52.  
  53. prime[0] = 2
  54.  
  55. for( i = 0 ; prime[i] < start ; i++)  ;
  56.  
  57. for (  ;  i <= p_cnt ; i++ )  print prime[i]
  58.  
  59. }
  60.  
  61.  
  62.      
  63.